package com.my.screenadapter.nobar;

import android.graphics.Color;
import android.os.Build;
import androidx.appcompat.app.ActionBar;
import android.view.View;

import com.my.screenadapter.Base.BaseActivity;
import com.my.screenadapter.R;

/**
 * Created by 张英杰 on 2016/12/26.
 */
public class NoBarActivity extends BaseActivity {
//    http://blog.csdn.net/guolin_blog/article/details/51763825


    @Override
    protected void init() {
//        hideView();
        setBarTransparent();
//        hideViewTwo();
//        setBarTwo();
    }

    /**
     * 透明状态栏
     * 主体内容占用系统导航栏的空间
     */
    private void setBarTwo() {
        if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
//            SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION表示会让应用的主体内容占用系统导航栏的空间，
//            然后又调用了setNavigationBarColor()方法将导航栏设置成透明色
            int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setNavigationBarColor(Color.TRANSPARENT);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
    }

    /**
     * 隐藏 状态栏和toobar
     * 我们触摸屏幕的任意位置都会退出全屏
     */
    private void hideViewTwo() {
        View decorView = getWindow().getDecorView();
//        同时使用了SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN，
//        这样就可以将状态栏和导航栏同时隐藏了
        int option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(option);
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
    }

    /**
     * 透明状态栏效果
     *
     * 饿了么这样的效果是只有5.0及以上系统才支持，
     * 因此这里先进行了一层if判断，只有系统版本大于或等于5.0的时候才会执行下面的代码。
     * 接下来我们使用了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_STABLE，
     * 注意两个Flag必须要结合在一起使用，表示会让应用的主体内容占用系统状态栏的空间，
     * 最后再调用Window的setStatusBarColor()方法将状态栏设置成透明色就可以了
     */
    private void setBarTransparent() {
        if (Build.VERSION.SDK_INT >= 21) {
            View decorView = getWindow().getDecorView();
            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
            decorView.setSystemUiVisibility(option);
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
    }

    /**
     * 下拉后状态栏重新弹出
     */
    private void hideView() {
        //    隐藏状态栏和ActionBar的方式在4.1系统之上和4.1系统之下还是不一样的，
//    这里我就不准备考虑4.1系统之下的兼容性了，因为过于老的系统根本就没有提供沉浸式体验的支持。
        View decorView = getWindow().getDecorView();//方法获取到了当前界面的DecorView
        int option = View.SYSTEM_UI_FLAG_FULLSCREEN;
//        SYSTEM_UI_FLAG_FULLSCREEN表示全屏的意思，也就是会将状态栏隐藏
        decorView.setSystemUiVisibility(option);
        //setSystemUiVisibility()方法来设置系统UI元素的可见性。
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();
    }

    @Override
    protected int initLayoutId() {
        return R.layout.activity_nobar;
    }

//    界面默认情况下是全屏的，状态栏和导航栏都不会显示。
//    而当我们需要用到状态栏或导航栏时，只需要在屏幕顶部向下拉，或者在屏幕右侧向左拉，状态栏和导航栏就会显示出来，
//    此时界面上任何元素的显示或大小都不会受影响。
//    过一段时间后如果没有任何操作，状态栏和导航栏又会自动隐藏起来，重新回到全屏状态。
//    这就是最标准的沉浸式模式
//    如果toolbar显示出来了，那么将不会回到全屏状态，横竖屏切换 也不会全屏
//    @Override
//    public void onWindowFocusChanged(boolean hasFocus) {
//        super.onWindowFocusChanged(hasFocus);
//        if(hasFocus&&Build.VERSION.SDK_INT>=19){
//            View decorView=getWindow().getDecorView();
//            decorView.setSystemUiVisibility(
//                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
//                            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
//                            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
//                            | View.SYSTEM_UI_FLAG_FULLSCREEN
////                    immersive 沉浸式的 STICKY粘性的
//                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
//            );
//        }
//    }
}
